This document analyses the self-developed sheduler componnet in Android-based mobile devices as part of the SyMptOMS project.

Reproduce paper

To create the PDF of the computational notebook you can run the following commands in a new R session. If you have problems rendering the PDF you can execute each chunk independently in RStudio.

This document does not install the required R packages by default. You can run the script install.R to install all required dependencies on a new R installation, or use install.packages(..) to install missing R packages.

The plots and tables use the packages ggplot2, knitr::kable() and kableExtra.

Required libraries and runtime environment description are as follows.

library(tidyverse)
library(kableExtra)
library(here)
library(googledrive)
library(lubridate)
library(stringr)
library(scales)
library(plotly)

Data download

## Using an auto-discovered, cached token.
## To suppress this message, modify your code or options to clearly consent to the use of a cached token.
## See gargle's "Non-interactive auth" vignette for more details:
## https://gargle.r-lib.org/articles/non-interactive-auth.html
## The googledrive package is using a cached token for canut@uji.es.

Data preparation

Key Variables:

Scheduler assessment

129.922 observations registered in both experiments. Table below summarises ranges and total numbers per device.

Table. Descriptive data (total, ranges) per device.
exp_id device_desc # observations start datetime end_datetime mean delay sd mean - 2sd mean + 2sd
#1 Advanced - BQ Aquaris V 21391 2020-03-30 12:15:03 2020-04-14 13:07:57 0.703 2.431 -4.159 5.565
#1 Advanced - Nvidia Shield Tablet 21453 2020-03-30 12:15:03 2020-04-14 13:08:14 0.638 2.169 -3.700 4.976
#1 Advanced - Xiaomi Mi A1 21465 2020-03-30 12:23:27 2020-04-14 13:07:50 0.476 3.513 -6.550 7.502
#1 Basic - Honor 9 21574 2020-03-30 12:00:03 2020-04-14 13:01:35 0.351 2.456 -4.561 5.263
#1 Basic - Motorola Moto G 21619 2020-03-30 12:00:07 2020-04-14 13:01:16 1.014 2.755 -4.496 6.524
#2 Advanced - Honor 9 5783 2020-04-15 11:00:02 2020-04-19 11:59:14 0.351 2.456 -4.561 5.263
#2 Advanced - Motorola Moto G 4249 2020-04-16 12:09:53 2020-04-19 12:00:11 1.014 2.755 -4.496 6.524
#2 Basic - BQ Aquaris V 4429 2020-04-15 11:16:26 2020-04-18 13:30:10 0.703 2.431 -4.159 5.565
#2 Basic - Nvidia Shield Tablet 3528 2020-04-15 11:16:18 2020-04-17 22:27:06 0.638 2.169 -3.700 4.976
#2 Basic - Xiaomi Mi A1 4431 2020-04-15 11:16:23 2020-04-18 13:32:22 0.476 3.513 -6.550 7.502

1.6% (2.108/129.922) of outliers. Outlier breakdown below.

Table. Outliers total per sheduler/device.
scheduler device_name # outliers
Advanced BQ Aquaris V 65
Advanced Honor 9 54
Advanced Motorola Moto G 461
Advanced Nvidia Shield Tablet 231
Advanced Xiaomi Mi A1 210
Basic Honor 9 6
Basic Motorola Moto G 1079
Basic Xiaomi Mi A1 2

Distribution of delay over plan_date

See the shiny app!

Distribution of delay over battery (without outliers)

## Warning in bind_rows_(x, .id): Unequal factor levels: coercing to character
## Warning in bind_rows_(x, .id): binding character and factor vector,
## coercing into character vector

## Warning in bind_rows_(x, .id): binding character and factor vector,
## coercing into character vector
## Warning in bind_rows_(x, .id): Unequal factor levels: coercing to character
## Warning in bind_rows_(x, .id): binding character and factor vector,
## coercing into character vector

## Warning in bind_rows_(x, .id): binding character and factor vector,
## coercing into character vector

## Warning in bind_rows_(x, .id): binding character and factor vector,
## coercing into character vector

## Warning in bind_rows_(x, .id): binding character and factor vector,
## coercing into character vector

## Warning in bind_rows_(x, .id): binding character and factor vector,
## coercing into character vector

Boxplots

Basic statistics applied to delay and device_name. Given a device, how do the box plots change on each scheduler?

## This version of Shiny is designed to work with 'htmlwidgets' >= 1.5.
##     Please upgrade via install.packages('htmlwidgets').
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels

## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels